The present invention pertains to the field of real-time data processing. More particularly, this invention relates to protecting against failures due to data unavailability in real-time data processing.
Real-time data processing is data processing that relies on data being available at particular times. For instance, most modems process data in real-time, meaning that data is transmitted and received at a particular frequency or rate. If data is not available when it is expected or needed, the unavailability can cause failures. For instance, a transmitting modem may xe2x80x9cstallxe2x80x9d if data is not available to be transmitted. A stalled transmitting modem may also cause a receiving modem to become confused or assume that the transmitting modem has terminated the connection.
Failures may substantially impact performance. For instance, re-establishing proper communications between modems can take several seconds. The modems may have to xe2x80x9cretrain,xe2x80x9d taking time to establish a transfer rate, an encoding/decoding protocol, an error checking protocol, etc. With data transmission rates on the order of thousands or even millions of bits per second, wasting several seconds to re-establish communications is very costly in terms of performance.
Failures due to data unavailability are particularly problematic when real-time data processing relies on data from a non-real-time source as opposed to a real-time source. For instance, a conventional hardware modem relies on a real-time source in that it uses dedicated hardware to generate data in real-time. A software or host-based modem, in contrast, relies on a non-real-time source in that it relies on a host processor to generate data. Many host processors do not operate in real-time. That is, the processing power of a host processor may be shared and arbitrated among many different simultaneous processes. The amount of time that any one process waits to be serviced may vary depending upon factors such as the number and type of processes vying to be serviced. Since service time is variable, data may not be available when it is needed for real-time processing.
Non-real-time data sources, however, often provide less expensive hardware solutions for real-time processing. For instance, a conventional hardware modem requires more hardware, and consequently has a higher price point, than a software modem. In order for non-real-time solutions to be viable data sources for real-time processing, the consequences of failures due to data unavailability must be kept to within acceptable limits.
Host processors commonly used for non-real-time data sources tend to be much more powerful than dedicated hardware. For instance, host processors used by software modems can generate a block of data in a short burst of processing time and store the data in a buffer. Then the data can be read from the buffer in real-time while the host processor performs other processing. As long as the host processor returns to the software modem process to generate more data before the buffered data is entirely consumed, the non-real-time data generation by the host processor will not cause failures due to data unavailability.
Various techniques have been used to increase the likelihood that buffered data is available for real-time use. For instance, the size of the buffer can be increased. Increasing buffer size, however, has the obvious disadvantages of using larger amounts of limited storage resources and requiring more processing time to generate one buffer of data.
Another approach modifies the host system to make interrupt requests from a real-time process non-pre-emptible. Essentially, this approach forces the host system to be a real-time data source, and is impractical in many host systems. Making certain interrupts non-pre-emptible may require modifications to the operating system or even modifications to the hardware. These extensive modifications tend to eliminate any cost advantage afforded by using a host system as a data source.
In another approach, as discussed in U.S. Pat. No. 5,721,830 issued to Yeh et al., data can be stored in a circular buffer so that if new data is not available on time, old data can be reused. This type of approach is only applicable where re-using old data is preferable to no data at all.
Therefore, an improved method and apparatus for protecting against failures due to data unavailability in real-time data processing is needed.
The present invention protects against failures due to data unavailability in real-time data processing. The last state of data stored in an output buffer is computed, and a pointer is updated based on the last state of the data stored in the output buffer to point to a starting location of a buffer storing spurious data. In one embodiment, if the data stored in the output buffer is entirely consumed in real-time before new data is written, the pointer is used to begin consuming the spurious data in real-time.